solve_triangular_system Interface

public interface solve_triangular_system

Module Procedures

private pure function solve_tri_mtx(lside, upper, trans, nounit, alpha, a, b) result(x)

Solves a triangular system of equations of the form or where is a triangular matrix (either upper or lower) for the unknown .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

Set to true to solve ; else, set to false to solve .

logical, intent(in) :: upper

Set to true if is upper triangular; else, set to false if is lower triangular.

logical, intent(in) :: trans

Set to true if ; else, set to false if .

logical, intent(in) :: nounit

Set to true if is unit-triangular (ones on the diagonal); else, false if is not unit-triangular.

real(kind=real64), intent(in) :: alpha

The scalar multiplier .

real(kind=real64), intent(in), dimension(:,:) :: a

If lside is true, the M-by-M triangular matrix ; else, is N-by-N if lside is false.

real(kind=real64), intent(in), dimension(:,:) :: b

The M-by-N matrix .

Return Value real(kind=real64), allocatable, dimension(:,:)

The M-by-N matrix .

private pure function solve_tri_mtx_cmplx(lside, upper, trans, nounit, alpha, a, b) result(x)

Solves a triangular system of equations of the form or where is a triangular matrix (either upper or lower) for the unknown .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

Set to true to solve ; else, set to false to solve .

logical, intent(in) :: upper

Set to true if is upper triangular; else, set to false if is lower triangular.

logical, intent(in) :: trans

Set to true if ; else, set to false if .

logical, intent(in) :: nounit

Set to true if is unit-triangular (ones on the diagonal); else, false if is not unit-triangular.

complex(kind=real64), intent(in) :: alpha

The scalar multiplier .

complex(kind=real64), intent(in), dimension(:,:) :: a

If lside is true, the M-by-M triangular matrix ; else, is N-by-N if lside is false.

complex(kind=real64), intent(in), dimension(:,:) :: b

On input, The M-by-N matrix .

Return Value complex(kind=real64), allocatable, dimension(:,:)

The M-by-N matrix .

private pure function solve_tri_vec(upper, trans, nounit, a, b) result(x)

Solves the triangular system where is a triangular matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: upper

Set to true if is upper triangular; else, set to false if is lower triangular.

logical, intent(in) :: trans

Set to true if ; else, set to false if .

logical, intent(in) :: nounit

Set to true if is unit-triangular (ones on the diagonal); else, false if is not unit-triangular.

real(kind=real64), intent(in), dimension(:,:) :: a

The N-by-N triangular matrix .

real(kind=real64), intent(in), dimension(:) :: b

The N-element vector .

Return Value real(kind=real64), allocatable, dimension(:)

The N-element vector .

private pure function solve_tri_vec_cmplx(upper, trans, nounit, a, b) result(x)

Solves the triangular system where is a triangular matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: upper

Set to true if is upper triangular; else, set to false if is lower triangular.

logical, intent(in) :: trans

Set to true if ; else, set to false if .

logical, intent(in) :: nounit

Set to true if is unit-triangular (ones on the diagonal); else, false if is not unit-triangular.

complex(kind=real64), intent(in), dimension(:,:) :: a

The N-by-N triangular matrix .

complex(kind=real64), intent(in), dimension(:) :: b

The N-element vector .

Return Value complex(kind=real64), allocatable, dimension(:)

The N-element vector .